package main

import (
	"fmt"
	"net"
)

// 处理和客户端的通讯
func handle(conn net.Conn) {
	defer conn.Close()

	ps := Processor{
		Conn: conn,
	}

	err := ps.processor()
	if err != nil {
		fmt.Printf("客户端与服务器通讯协程错误=%v \n", err)
	}
}

func main() {
	fmt.Println("Listen on 8899")
	listen, err := net.Listen("tcp", "0.0.0.0:8899")
	if err != nil {
		fmt.Println("net.Listen err=", err)
		return
	}
	defer listen.Close()

	// 一旦监听成功，等待客户端连接
	for {
		fmt.Println("等待客户端来连接服务器...")
		conn, err := listen.Accept()
		if err != nil {
			fmt.Println("listen.Accept err=", err)
			return
		}

		// 一旦连接成功，则启动一个协程和客户端保持通讯
		go handle(conn)
	}
}
